/*
 *    Copyright (c) 2018-2025, boss All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * Neither the name of the boss developer nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * Author: boss
 */
package com.hopes.bizz.poll.alarm.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hopes.bizz.poll.alarm.entity.PollAlarmConfigEntity;
import com.hopes.bizz.poll.alarm.mapper.PollAlarmConfigMapper;
import com.hopes.bizz.poll.alarm.service.PollAlarmConfigService;
import com.hopes.boss.common.core.exception.BizException;
import org.springframework.stereotype.Service;

/**
 * 分级报警配置
 *
 * @author daijie
 * @date 2023-05-29 09:58:15
 */
@Service
public class PollAlarmConfigServiceImpl extends ServiceImpl<PollAlarmConfigMapper, PollAlarmConfigEntity> implements PollAlarmConfigService {

    private final String MONITOR_SITE_ERROR_MSG = "监控点已存在配置!";

    @Override
    public boolean save(PollAlarmConfigEntity entity) {
        LambdaQueryWrapper<PollAlarmConfigEntity> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(PollAlarmConfigEntity::getDefaultFlag, false);
        for (PollAlarmConfigEntity configEntity : this.list(wrapper)) {
            if (configEntity.getMonitorSiteId().equals(entity.getMonitorSiteId())) {
                throw new BizException(MONITOR_SITE_ERROR_MSG);
            }
        }
        return super.save(entity);
    }

}